package com.torresquintero.oncologos.common.entityUtilities;

import java.util.List;

import javax.persistence.EntityManager;

import com.torresquintero.oncologos.common.factory.FactoryEntityManager;
import com.torresquintero.oncologos.entidades.Procedimiento;

/**
 * Clase que implementa las consultas basicas sobre un medico 
 * que se efectuan en toda la aplicacion.
 * @author Camilo Andres
 *
 */
@SuppressWarnings("unchecked")
public class ProcedimientoUtilities {

    /**
     * Variable statica para el partron Singleton
     */
    private static ProcedimientoUtilities articuloUtilities;
    /**
     * Administrador de entidades.
     */
    private static EntityManager em;

    /**
     * Constructor, inicializa el EntityManager.
     */
    private ProcedimientoUtilities() {

        em = FactoryEntityManager.getEm();
    }

    /**
     * Metodo para obtener una instancia singleton de esta clase.
     * @return
     */
    public static ProcedimientoUtilities getInstance() {

        if (articuloUtilities == null) {
            articuloUtilities = new ProcedimientoUtilities();
        }
        return articuloUtilities;
    }

    /**
     * metodo que busca los procedimientos por nombbre
     * @param nombre
     * @return 
     */
    public static List<Procedimiento> getProcedimientoPorNombre(String nombre) {

        EntityManager em = FactoryEntityManager.getEm();

        return em.createNamedQuery(Procedimiento.FIND_PROCEDIMIENTO_BY_NOMBRE).
                setParameter(Procedimiento.PARAMETRO_NOMBRE_PROC, "%" + nombre + "%").
                getResultList();

    }

    /**
     * Metoodo para buscar un procedimiento.
     * @param codigo
     * @return 
     */
    public static  List<Procedimiento> buscarProcedimiento(String codigo) {
        
         getInstance();
        List<Procedimiento> procs= em.createNamedQuery(Procedimiento.FIND_PROCEDIMIENTO_BY_CODIGO).
                setParameter(Procedimiento.PARAMETRO_CODIGO, codigo).getResultList();
        
        return procs;
    }
}
